// token拦截器
import store from "@/store";
import { BASE_URL, ENV } from "./env";
const tokenInterceptor = (config) => {
  // if(config.url === "mlogin") {
  //   return config;
  // }
  // 获取token
  // const token = store.state.user.token;
  // const token = store.getters['user/token'];
  const token = uni.getStorageSync("token");
  const userInfo = uni.getStorageSync("userInfo");
  const tenantId = userInfo?.userInfo?.loginTenantId || '';
  if (token) {
    config.header = config.header || {};
    config.header["Authorization"] = token;
    config.header["X-Access-Token"] = token;
    config.header["X-Tenant-Id"] = tenantId;
    if (config.params) {
        config.params._t = new Date().getTime();
    }
    if (config.data) {
        config.data._t = new Date().getTime();
    }
    console.log(config)
  }
  return config;
}
// 参数拦截器 序列化参数
const paramsInterceptor = (config) => {
  if ((config.method === "get" || config.method === "GET") && config.params) {
    let params = config.params;
    let paramsArray = [];
    Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key]));
    if (config.url.search(/\?/) === -1) {
      config.url += '?' + paramsArray.join('&');
    } else {
      config.url += '&' + paramsArray.join('&');
    }
  }
  return config;
}
// url拦截器
const urlInterceptor = (config) => {
  // 后续配置到环境变量
  if (config.url.indexOf("http://") === 0 || config.url.indexOf("https://") === 0) {
    return config;
  }
  config.url = BASE_URL[ENV] + config.url;
  return config;
}
// 响应拦截器
export const responseInterceptor = (response) => {
  // 为什么是[1]需要再看看
  let res = response[1];
  // 判断是否正常响应
  if (!res || res.statusCode !== 200) {
    uni.showToast({
      title: res?.msg || "请检查网络是否畅通",
      icon: "none",
    })
    return Promise.reject(res);
  }
  const resData = res.data;
  // 判断code
  if (resData.code === 200) {
    return Promise.resolve(resData);
  }
  debugger
  // 登录过期
  if (resData.code === 401) {
    // uni.showToast({
    //   title: resData.message || "网络异常",
    //   icon: "none",
    // })
    // 清除token
    uni.removeStorageSync("token");
    store.commit("setToken", null);
    // 跳转到登录页
    uni.showModal({
      title: '确认',
      content: resData.message || '登录超时，请重新登录！',
      showCancel: false,
      success: function (res) {
        uni.reLaunch({
          url: '/pages/login/index'
        })
      }
    });
    // uni.reLaunch({
    //   url: "/pages/login/index",
    // });
    return Promise.reject(resData);
  }
  // 其他错误
  uni.showToast({
    title: resData.message || "网络异常",
    icon: "none",
  })
  return Promise.reject(resData);
}
export const requestInterceptor = (config) => {
  tokenInterceptor(config);
  paramsInterceptor(config);
  urlInterceptor(config);
  console.log('请求返回数据：', config)
  return config;
}
